﻿using System.Data;
using System.Linq;
using System.Web.Mvc;
using EventPlanner.Models;
using EventPlanner.DAL;
using EventPlanner.Performance;

namespace EventPlanner.Controllers
{
    [CompressFilter(Order = 1)]
    [CacheFilter(Duration = 60, Order=2)]
    public class OrganizadorController : Controller
    {
        private EventPlannerContext db = new EventPlannerContext();

        //
        // GET: /Organizador/

        /* Lista: llena la tabla con todos los organizadores cargados en la base de datos.  */

        [Authorize]
        public ViewResult Lista()
        {
            return View(db.Organizadores.ToList());
        }

        //
        // GET: /Organizador/5

        /* Detalles: envia a la vista los detalles de un organizador determinado. */

        [Authorize]
        public ViewResult Detalles(int id)
        {
            Organizador organizador = db.Organizadores.Find(id);
            return View(organizador);
        }

        //
        // GET: /Organizador/Crear

        /* Crear: carga un organizador nuevo en la base de datos. */

        [Authorize]
        public ActionResult Crear()
        {
            return View();
        } 

        //
        // POST: /Organizador/Crear

        [HttpPost]
        public ActionResult Crear(Organizador organizador)
        {
            if (ModelState.IsValid)
            {
                db.Organizadores.Add(organizador);
                db.SaveChanges();
                return RedirectToAction("Lista");  
            }

            return View(organizador);
        }
        
        //
        // GET: /Organizador/Editar/5

        /* Editar: actualiza los datos de un organizador determinado en la base de datos. */

        [Authorize]
        public ActionResult Editar(int id)
        {
            Organizador organizador = db.Organizadores.Find(id);
            return View(organizador);
        }

        //
        // POST: /Organizador/Editar/5

        [HttpPost]
        public ActionResult Editar(Organizador organizador)
        {
            if (ModelState.IsValid)
            {
                db.Entry(organizador).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Lista");
            }
            return View(organizador);
        }

        //
        // GET: /Organizador/Eliminar/5

        /* Eliminar: borra los datos de un oganizador definitivamente del sistema. */

        [Authorize]
        public ActionResult Eliminar(int id)
        {
            Organizador organizador = db.Organizadores.Find(id);
            return View(organizador);
        }

        //
        // POST: /Organizador/Eliminar/5

        [HttpPost, ActionName("Eliminar")]
        public ActionResult EliminacionConfirmada(int id)
        {            
            Organizador organizador = db.Organizadores.Find(id);
            db.Organizadores.Remove(organizador);
            db.SaveChanges();
            return RedirectToAction("Lista");
        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }
    }
}